package com.itdct.onflow.generator.config

import com.itdct.onflow.generator.constant.GroupEnum

/**
 * @author Zhouwx
 * @date 2025/7/23 0:04:42
 * @version 1.0
 * @description
 */
open class GeneratorConfig {
    /**
     * 代码生成器的核心功能，是否生成各个代码文件
     */
    var generateFile = true

    /**
     * 当前会话版本，这里通过会话版本生成对应的sql语句文件
     */
    var sessionVersion = "20250814"

    /**
     * 不同模板组对应的路径
     */
    val groupModulePath = HashMap<GroupEnum, String>()

    /**
     * 作者名称
     */
    var authorName = ""

    /**
     * 是否在项目内直接生成
     */
    var projectGen = true

    /**
     * 项目外还会留一份，如果不为空则会进行备份
     */
    var backupPath = ""

    /**
     * 是否生成日志
     * 注意！！如果不生成日志文件，则增量功能会失效！
     */
    var generateLog = true

    /**
     * 强制全部覆盖代码（重新生成），且不会生成SQL的alter语句
     */
    var forceOverwrite = false

    /**
     * 适配器模块名称，默认为adaptor，可以自定义类似adaptor的模块名
     */
    var adaptorName = "adaptor"

    /**
     * 服务模块名称，默认为service，可以自定义类似service的模块名
     */
    var serviceName = "service"

    /**
     * 是否生成sql
     */
    var generateSql = true

    /**
     * 默认字符集
     */
    var defaultCharset = "utf8mb4"

    /**
     * 默认排序
     */
    var defaultCollate = "utf8mb4_unicode_ci"

    /**
     * 数据库ip
     */
    var databaseIp = ""

    /**
     * 数据库端口
     */
    var databasePort = ""

    /**
     * 数据库名称
     */
    var databaseName = ""

    /**
     * 数据库用户名
     */
    var databaseUserName = ""

    /**
     * 数据库密码
     */
    var databasePassword = ""

    /**
     * api后缀，例如 xxx.adw
     */
    var apiSuffix = "adw"

    /**
     * 日志记录数，默认3条，防止生成日志文件过大
     */
    var logRecordCount = 3

    /**
     * 项目的groupId，比如com.itdct.onflow，对于前端模板生成来说，这个是必填项
     */
    var groupId = ""

    /**
     * 是否同步表结构，默认为true
     */
    var syncTable = true

    /**
     * 逻辑删除字段名称，默认为del
     */
    var logicDeleteFieldName = "del"

}